git-tips
    
      
        Collection of git-tips, want to add your tips? Checkout
        contributing.md
      
    
    
      English |
      中文 |
      Русский |
      한국어 |
      Tiếng Việt |
      日本語 |
      नेपाली |
      Polski |
      فارسی
    
    
    
    
      P.S: All these commands are tested on
      git version 2.7.4 (Apple Git-66).
    
    
    
    
      - 
        Everyday Git in twenty commands or so
      
 
      - 
        Show helpful guides that come with Git
      
 
      - Search change by content
 
      - 
        Show changes over time for specific file
      
 
      - 
        Remove sensitive data from history, after a push
      
 
      - 
        Sync with remote, overwrite local changes
      
 
      - 
        List of all files till a commit
      
 
      - Git reset first commit
 
      - 
        Reset: preserve uncommitted local changes
      
 
      - 
        List all the conflicted files
      
 
      - 
        List of all files changed in a commit
      
 
      - 
        Unstaged changes since last commit
      
 
      - 
        Changes staged for commit
      
 
      - 
        Show both staged and unstaged changes
      
 
      - 
        List all branches that are already merged into master
      
 
      - 
        Quickly switch to the previous branch
      
 
      - 
        Remove branches that have already been merged with master
      
 
      - 
        List all branches and their upstreams, as well as last commit on
          branch
      
 
      - Track upstream branch
 
      - Delete local branch
 
      - Delete remote branch
 
      - Create local tag
 
      - Delete local tag
 
      - Delete remote tag
 
      - 
        Undo local changes with the last content in head
      
 
      - 
        Revert: Undo a commit by creating a new commit
      
 
      - 
        Reset: Discard commits, advised for private branch
      
 
      - 
        Reword the previous commit message
      
 
      - 
        See commit history for just the current branch
      
 
      - Amend author.
 
      - 
        Reset author, after author has been changed in the global config.
      
 
      - Changing a remote’s URL
 
      - 
        Get list of all remote references
      
 
      - 
        Get list of all local and remote branches
      
 
      - Get only remote branches
 
      - 
        Stage parts of a changed file, instead of the entire file
      
 
      - Get git bash completion
 
      - 
        What changed since two weeks?
      
 
      - 
        See all commits made since forking from master
      
 
      - 
        Pick commits across branches using cherry-pick
      
 
      - 
        Find out branches containing commit-hash
      
 
      - Git Aliases
 
      - 
        Saving current state of tracked files without commiting
      
 
      - 
        Saving current state of unstaged changes to tracked files
      
 
      - 
        Saving current state including untracked files
      
 
      - 
        Saving current state with message
      
 
      - 
        Saving current state of all files (ignored, untracked, and
          tracked)
      
 
      - 
        Show list of all saved stashes
      
 
      - 
        Show the contents of any stash in patch form
      
 
      - 
        Apply any stash without deleting from the stashed list
      
 
      - 
        Apply last stashed state and delete it from stashed list
      
 
      - 
        Delete all stored stashes
      
 
      - 
        Grab a single file from a stash
      
 
      - Show all tracked files
 
      - Show all untracked files
 
      - Show all ignored files
 
      - 
        Create new working tree from a repository (git 2.5)
      
 
      - 
        Create new working tree from HEAD state
      
 
      - 
        Untrack files without deleting
      
 
      - 
        Before deleting untracked files/directory, do a dry run to get the
          list of these files/directories
      
 
      - 
        Forcefully remove untracked files
      
 
      - 
        Forcefully remove untracked directory
      
 
      - 
        Update all the submodules
      
 
      - 
        Show all commits in the current branch yet to be merged to master
      
 
      - Rename a branch
 
      - 
        Rebases ‘feature’ to ‘master’ and merges it in to master
      
 
      - 
        Archive the 
master branch
       
      - 
        Modify previous commit without modifying the commit message
      
 
      - 
        Prunes references to remove branches that have been deleted in the
          remote.
      
 
      - 
        Delete local branches that has been squash and merged in the
          remote.
      
 
      - 
        Retrieve the commit hash of the initial revision.
      
 
      - 
        Visualize the version tree.
      
 
      - 
        Visualize the tree including commits that are only referenced from
          reflogs
      
 
      - 
        Deploying git tracked subfolder to gh-pages
      
 
      - 
        Adding a project to repo using subtree
      
 
      - 
        Get latest changes in your repo for a linked project using subtree
      
 
      - 
        Export a branch with history to a file.
      
 
      - Import from a bundle
 
      - 
        Get the name of current branch.
      
 
      - 
        Ignore one file on commit (e.g. Changelog).
      
 
      - 
        Stash changes before rebasing
      
 
      - 
        Fetch pull request by ID to a local branch
      
 
      - 
        Show the most recent tag on the current branch.
      
 
      - Show inline word diff.
 
      - 
        Show changes using common diff tools.
      
 
      - 
        Don’t consider changes for tracked file.
      
 
      - Undo assume-unchanged.
 
      - 
        Clean the files from 
.gitignore.
       
      - Restore deleted file.
 
      - 
        Restore file to a specific commit-hash
      
 
      - 
        Always rebase instead of merge on pull.
      
 
      - 
        List all the alias and configs.
      
 
      - Make git case sensitive.
 
      - Add custom editors.
 
      - Auto correct typos.
 
      - 
        Check if the change was a part of a release.
      
 
      - 
        Dry run. (any command that supports dry-run flag should do.)
      
 
      - 
        Marks your commit as a fix of a previous commit.
      
 
      - 
        Squash fixup commits normal commits.
      
 
      - 
        Skip staging area during commit.
      
 
      - Interactive staging.
 
      - List ignored files.
 
      - Status of ignored files.
 
      - 
        Commits in Branch1 that are not in Branch2
      
 
      - List n last commits
 
      - 
        Reuse recorded resolution, record and reuse previous conflicts
          resolutions.
      
 
      - 
        Open all conflicted files in an editor.
      
 
      - 
        Count unpacked number of objects and their disk consumption.
      
 
      - 
        Prune all unreachable objects from the object database.
      
 
      - 
        Instantly browse your working repository in gitweb.
      
 
      - 
        View the GPG signatures in the commit log
      
 
      - 
        Remove entry in the global config.
      
 
      - 
        Checkout a new branch without any history
      
 
      - 
        Extract file from another branch.
      
 
      - 
        List only the root and merge commits.
      
 
      - 
        Change previous two commits with an interactive rebase.
      
 
      - List all branch is WIP
 
      - 
        Find guilty with binary search
      
 
      - 
        Bypass pre-commit and commit-msg githooks
      
 
      - 
        List commits and changes to a specific file (even through
          renaming)
      
 
      - Clone a single branch
 
      - 
        Create and switch new branch
      
 
      - 
        Ignore file mode changes on commits
      
 
      - 
        Turn off git colored terminal output
      
 
      - Specific color settings
 
      - 
        Show all local branches ordered by recent commits
      
 
      - 
        Find lines matching the pattern (regex or string) in tracked files
      
 
      - 
        Clone a shallow copy of a repository
      
 
      - 
        Search Commit log across all branches for given text
      
 
      - 
        Get first commit in a branch (from master)
      
 
      - Unstaging Staged file
 
      - 
        Force push to Remote Repository
      
 
      - Adding Remote name
 
      - 
        List all currently configured remotes
      
 
      - 
        Show the author, time and last revision made to each line of a given
          file
      
 
      - 
        Group commits by authors and title
      
 
      - 
        Forced push but still ensure you don’t overwrite other’s work
      
 
      - 
        Show how many lines does an author contribute
      
 
      - 
        Revert: Reverting an entire merge
      
 
      - 
        Number of commits in a branch
      
 
      - Alias: git undo
 
      - Add object notes
 
      - Show all the git-notes
 
      - 
        Apply commit from another repository
      
 
      - Specific fetch reference
 
      - 
        Find common ancestor of two branches
      
 
      - 
        List unpushed git commits
      
 
      - 
        Add everything, but whitespace changes
      
 
      - 
        Edit [local/global] git config
      
 
      - blame on certain range
 
      - 
        Show a Git logical variable.
      
 
      - Preformatted patch file.
 
      - Get the repo name.
 
      - logs between date range
 
      - Exclude author from logs
 
      - 
        Generates a summary of pending changes
      
 
      - 
        List references in a remote repository
      
 
      - Backup untracked files.
 
      - List all git aliases
 
      - Show git status short
 
      - 
        Checkout a commit prior to a day ago
      
 
      - 
        Push the current branch to the same name on the remote repository
      
 
      - 
        Push a new local branch to remote repository and track
      
 
      - Change a branch base
 
      - 
        Use SSH instead of HTTPs for remotes
      
 
      - 
        Update a submodule to the latest commit
      
 
      - 
        Prevent auto replacing LF with CRLF
      
 
    
    
    
    
    
    
      Everyday Git in twenty commands or so
    
    
    
      Show helpful guides that come with Git
    
    
    Search change by content
    
    
      Show changes over time for specific file
    
    
    
      Remove sensitive data from history, after a push
    
    
    
      Sync with remote, overwrite local changes
    
    
    
      List of all files till a commit
    
    
    Git reset first commit
    
    
      Reset: preserve uncommitted local changes
    
    
    List all the conflicted files
    
    
      List of all files changed in a commit
    
    
    
      Unstaged changes since last commit
    
    
    Changes staged for commit
    
    Alternatives:
    
    
      Show both staged and unstaged changes
    
    
    
      List all branches that are already merged into master
    
    
    
      Quickly switch to the previous branch
    
    
    Alternatives:
    
    
      Remove branches that have already been merged with master
    
    
    Alternatives:
    
    
      List all branches and their upstreams, as well as last commit on branch
    
    
    Track upstream branch
    
    Delete local branch
    
    Delete remote branch
    
    Alternatives:
    
    
    Create local tag
    
    Delete local tag
    
    Delete remote tag
    
    
      Undo local changes with the last content in head
    
    
    
      Revert: Undo a commit by creating a new commit
    
    
    
      Reset: Discard commits, advised for private branch
    
    
    
      Reword the previous commit message
    
    
    
      See commit history for just the current branch
    
    
    Amend author.
    
    
      Reset author, after author has been changed in the global config.
    
    
    Changing a remote’s URL
    
    
      Get list of all remote references
    
    
    Alternatives:
    
    
      Get list of all local and remote branches
    
    
    Get only remote branches
    
    
      Stage parts of a changed file, instead of the entire file
    
    
    Get git bash completion
    
    What changed since two weeks?
    
    Alternatives:
    
    
      See all commits made since forking from master
    
    
    
      Pick commits across branches using cherry-pick
    
    
    
      Find out branches containing commit-hash
    
    
    Alternatives:
    
    Git Aliases
    
    
      Saving current state of tracked files without commiting
    
    
    Alternatives:
    
    
      Saving current state of unstaged changes to tracked files
    
    
    Alternatives:
    
    
    
      Saving current state including untracked files
    
    
    Alternatives:
    
    
    
      Saving current state with message
    
    
    Alternatives:
    
    
      Saving current state of all files (ignored, untracked, and tracked)
    
    
    Alternatives:
    
    
    Show list of all saved stashes
    
    
      Show the contents of any stash in patch form
    
    
    
      Apply any stash without deleting from the stashed list
    
    
    
      Apply last stashed state and delete it from stashed list
    
    
    Alternatives:
    
    Delete all stored stashes
    
    Alternatives:
    
    
      Grab a single file from a stash
    
    
    Alternatives:
    
    Show all tracked files
    
    Show all untracked files
    
    Show all ignored files
    
    
      Create new working tree from a repository (git 2.5)
    
    
    
      Create new working tree from HEAD state
    
    
    Untrack files without deleting
    
    Alternatives:
    
    
      Before deleting untracked files/directory, do a dry run to get the list of
      these files/directories
    
    
    
      Forcefully remove untracked files
    
    
    
      Forcefully remove untracked directory
    
    
    Update all the submodules
    
    Alternatives:
    
    
    
      Show all commits in the current branch yet to be merged to master
    
    
    Alternatives:
    
    Rename a branch
    
    Alternatives:
    
    
      Rebases ‘feature’ to ‘master’ and merges it in to master
    
    
    
      Archive the master branch
    
    
    
      Modify previous commit without modifying the commit message
    
    
    
      Prunes references to remove branches that have been deleted in the remote.
    
    
    Alternatives:
    
    
      Delete local branches that has been squash and merged in the remote.
    
    
    
      Retrieve the commit hash of the initial revision.
    
    
    Alternatives:
    
    
    
    Visualize the version tree.
    
    Alternatives:
    
    
    
      Visualize the tree including commits that are only referenced from reflogs
    
    
    
      Deploying git tracked subfolder to gh-pages
    
    
    
      Adding a project to repo using subtree
    
    
    
      Get latest changes in your repo for a linked project using subtree
    
    
    
      Export a branch with history to a file.
    
    
    Import from a bundle
    
    
      Get the name of current branch.
    
    
    
      Ignore one file on commit (e.g. Changelog).
    
    
    Stash changes before rebasing
    
    
      Fetch pull request by ID to a local branch
    
    
    Alternatives:
    
    
      Show the most recent tag on the current branch.
    
    
    Show inline word diff.
    
    
    
    
      Don’t consider changes for tracked file.
    
    
    Undo assume-unchanged.
    
    
      Clean the files from .gitignore.
    
    
    Restore deleted file.
    
    
      Restore file to a specific commit-hash
    
    
    
      Always rebase instead of merge on pull.
    
    
    Alternatives:
    
    
      List all the alias and configs.
    
    
    Make git case sensitive.
    
    Add custom editors.
    
    Auto correct typos.
    
    
      Check if the change was a part of a release.
    
    
    
      Dry run. (any command that supports dry-run flag should do.)
    
    
    
      Marks your commit as a fix of a previous commit.
    
    
    
      Squash fixup commits normal commits.
    
    
    
      Skip staging area during commit.
    
    
    Interactive staging.
    
    List ignored files.
    
    Status of ignored files.
    
    
      Commits in Branch1 that are not in Branch2
    
    
    List n last commits
    
    Alternatives:
    
    
      Reuse recorded resolution, record and reuse previous conflicts
      resolutions.
    
    
    
      Open all conflicted files in an editor.
    
    
    
      Count unpacked number of objects and their disk consumption.
    
    
    
      Prune all unreachable objects from the object database.
    
    
    
      Instantly browse your working repository in gitweb.
    
    
    
      View the GPG signatures in the commit log
    
    
    
      Remove entry in the global config.
    
    
    
      Checkout a new branch without any history
    
    
    
    
    
      List only the root and merge commits.
    
    
    
      Change previous two commits with an interactive rebase.
    
    
    List all branch is WIP
    
    Find guilty with binary search
    
    
      Bypass pre-commit and commit-msg githooks
    
    
    
      List commits and changes to a specific file (even through renaming)
    
    
    Clone a single branch
    
    Create and switch new branch
    
    Alternatives:
    
    
    
      Ignore file mode changes on commits
    
    
    
      Turn off git colored terminal output
    
    
    Specific color settings
    
    
      Show all local branches ordered by recent commits
    
    
    
      Find lines matching the pattern (regex or string) in tracked files
    
    
    
      Clone a shallow copy of a repository
    
    
    
      Search Commit log across all branches for given text
    
    
    
      Get first commit in a branch (from master)
    
    
    Alternatives:
    
    Unstaging Staged file
    
    
      Force push to Remote Repository
    
    
    Adding Remote name
    
    
    
    
      Show the author, time and last revision made to each line of a given file
    
    
    
      Group commits by authors and title
    
    
    
      Forced push but still ensure you don’t overwrite other’s work
    
    
    
      Show how many lines does an author contribute
    
    
    Alternatives:
    
    
      Revert: Reverting an entire merge
    
    
    Number of commits in a branch
    
    Alias: git undo
    
    Add object notes
    
    Show all the git-notes
    
    
      Apply commit from another repository
    
    
    Specific fetch reference
    
    
      Find common ancestor of two branches
    
    
    List unpushed git commits
    
    Alternatives:
    
    
    
      Add everything, but whitespace changes
    
    
    Edit [local/global] git config
    
    blame on certain range
    
    Show a Git logical variable.
    
    
    
    Get the repo name.
    
    logs between date range
    
    Exclude author from logs
    
    
      Generates a summary of pending changes
    
    
    
      List references in a remote repository
    
    
    Backup untracked files.
    
    List all git aliases
    
    Alternatives:
    
    Show git status short
    
    
      Checkout a commit prior to a day ago
    
    
    
      Push the current branch to the same name on the remote repository
    
    
    
      Push a new local branch to remote repository and track
    
    
    Change a branch base
    
    
      Use SSH instead of HTTPs for remotes
    
    
    
      Update a submodule to the latest commit
    
    
    
      Prevent auto replacing LF with CRLF